package com.tsing.cli.common.annotation;

import com.tsing.cli.common.constant.LimitTypeEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 限流注解
 *
 * @author TheTsing
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Limit {

    /**
     * 资源key，当limitType为key或key+ip时，key不能为空
     */
    String key() default "";

    /**
     * redis存储限流相关资源的key的前缀
     */
    String prefix() default "limit_";

    /**
     * 时间，单位毫秒
     */
    int period();

    /**
     * 限制访问的次数
     */
    int count();

    /**
     * 限流类型
     */
    LimitTypeEnum limitType();

}
